メンタル不調の原因を探っていたら、エンジニアがだいたい持ってそうな普遍的な悩みを抱えていることに気づいたので答えを考えてみた。
こんにちはー! 周期的なメンタル不調が来ているので、一旦立ち止まって、メンタル不調の原因と対策について。また、立ち止まって考えてみるいい機会なので、楽しくプログラムを書いたり、アプリ作りの能力やエンジニアとしての力を伸ばしていくためにどうしていけばいいんだっけ? っていう指針の部分を考えたり、色々な人に意見を求めてみたので文章に起こしてみます。
ぼんやり 2 週間ぐらい考えていたのですが、文章に一旦起こしておいたほうが自分の中でも一区切り付きそうなので、ここで文章にしていこうと思います。
目次
- メンタル不調の原因
- 自分流のメンタル不調対策案
- 今回の不調は、かなり大きくて抽象的な悩みが原因になっていそう
- 悩みを深掘って行くと、比較的一般的で抽象的な悩みに行き着く
- 相談してみた内容と、得られた答えや考え方
- 結論:これから何をするか?どういう指針で勉強したりプログラムを書いくか?
- こんな記事も見つけた
メンタル不調の原因
これに関しては、周期的・時期的な問題が大きそうだなぁとぼんやり感じています。先月、先々月とかなりやる気に満ち溢れてエンジンを回していたため、若干の燃料切れを起こしている感じがします。似たような現象は大学生の時期から定期的に発生していたので、学部生の頃と比べると上手く対策が取れるようになったのかなぁと感じています。
(学部生の頃に一度、4 ヶ月ぐらい何もできなくなってメンタルクリニックに通院したことがあります)
あとは、自分の中で”これはここまでやり切りたいな”って思っていた開発が一旦落ち着いてきて、エンジンを動かす対象が少なくなって来てしまったという現状も今回の不調の原因の 1 つに感じられています。やっぱり、大きめの目標だったり長期でこういう目標達成したいなって課題感がぼんやりでも合ったほうが、メンタルには良いようだなぁと感じられるいい機会でした。
自分流のメンタル不調対策案
学部生のころから、周期的な躁と鬱みたいな周期にだいぶ振り回されることがありました。学部生の頃はあまりそれを自覚して居なかったので、学部1年時に学生団体活動、インターン、バイトなど色々と掛け持ちしまくった結果、学部 2 年の夏休みから半年間完全にダウンしたことがありました(その時にメンタルクリニックにお世話になりました)
躁の時(エンジンがめちゃくちゃかかっている時)は、かなり自分も活動的になったり、色々なことに挑戦してみたり、新しい環境に飛び込んで勉強を始めたりと、物事がいい方向に早く進んでくれたりするので自分にとって良かったりします。ただ、躁が抜けて鬱期に入ると、自己効力感がめちゃくちゃ下がり、無気力状態になりがちになってしまいます。
この躁の状態がなるべく長く続き、鬱の期間が短い(なんなら無い)方がいいのですが、学部4年間の経験を考えると、この躁と鬱のサイクルはずっと付き合っていかなきゃいけなさそうだなと感じています。
躁を長引かせて、鬱を短くするための対策は、基本的な積み重ねが大事なんじゃないかな? といま現状では答えが出ています。
なんとなくメンタルの不調を感じたら、
- 部屋の換気をする
- しっかり睡眠をとる(早寝早起きじゃなくてもいい。たくさん寝る。試しに早い時間に起きてみる)
- 体に良くて美味しい食べ物を食べる
- 適度に体を動かす(ランニングをする。朝日を浴びてみる)
- 温泉に入る
以上の5つを実践すると、細かいメンタル不調は治ることが多いなと感じています。
ちょっと疲れたな…。やる気が起きないな…。ってときは、この5つを確認して実践すると、自分の場合は体調が戻ってまたエンジンに火を付けられる状態になります。
今回の不調は、かなり大きくて抽象的な悩みが原因になっていそう
もちろん、今回も上の5つはすでに実践していますし、なんならいくつかは習慣的に実施しています。そのおかげもあってか、6ヶ月ぐらい自分のやる気に火を付けたまま色々な活動に取り組んで来られたような気がします。ただ、自分なりに対策はしていたつもりでも大きなメンタル不調の波がまた来てしまいました。
原因として考えられる点は、
- 頼まれていた大きめの開発(複数)が一旦落ち着き、(もちろん大事だけど)細かい作業タスクに切り替わっている(燃料を透過するにも上手くエンジンがかからない)
- いま現状、自分が着手できている、実施できていることが、今の現状をより好転させるために効果がある、という実感が持てていない。
- 経験値に関しても、技術レベルに関してもまだまだ弱さを感じている、みたいなモヤモヤ
の3つが根本原因みたいな感じがするなと感じています。
生活リズムや栄養面の乱れみたいな些細な内容ならば直ぐに解決可能なのですが、かなり抽象的で大きなテーマ感のモヤモヤを今抱えてしまっているなぁと感じました。
これは早急に解決しないと来月のパフォーマンスに支障が起きそうだなと考えて、知り合いのエンジニアの方や、たびたび相談をしているエンジニアの先輩の方と相談をしました。
悩みを深掘って行くと、比較的一般的で抽象的な悩みに行き着く
悩みの根本の部分をしては、
- 自分はこれから何になっていくことを目標に頑張っていけばいいんだろうか?
- 結局、自分はどうなりたいのか?
- 計算機科学(いわゆる CS)をしっかり学びなおした方がいいのではないか?という不安(ゆには、社会学部の学士で、CS 系の学部出身ではない)
- プログラムを書いてアプリを作ったりしていくことは楽しいし、そのおかげで楽しくお仕事ができているが、自分のスキルレベルが足りずにどこかで頓挫してしまうのではないかという不安。
- なにを勉強して、何をやっていけばいいんだろうか?
と簡単に列挙してみると、ほとんどキャリアだったり、技術者としてどういった指針をもって成長していったり技術を身に着けていったらいいんだろう?って悩みに行き着きます。
こうした悩みは、一人で考えるだけでは解決できない、極めて抽象的な問題です。
なので、何人かのエンジニアの先輩方に相談を持ちかけて、今抱えているふわっとした悩みや現状を共有したりしてみました。
相談してみた内容と、得られた答えや考え方
Q1. CS 関連の学位は取っておくべき?
- 業務内容によって、合ったほうがいい場合もあれば、なくても問題ない場合もある。むしろ、その点はそこまで重要ではない。
- そもそも、CS を取っていなくてもエンジニアとして仕事をしている人は数多く要るし、学位を取ることそのものはそこまで重要ではない。
- ただし、CS 関連の学位を取るために様々な領域を学ぶことが出来るので、自分の専門領域を決めるために CS の学位を取りにいくことは手段の一つとしてはアリ。
- 独学で CS を学ぶことが難しい、モチベーションが続かないのであれば、強制力を働かせたり、知識を持っている人に気軽に質問ができる環境を得るためにも CS 関連の学部に入ることは手段の一つとしてアリ。
自分の専門領域を見つけるために学部に入ったり、学ぶ場所を作るために CS を学び直しに学部に入るのは選択肢として充分に価値はありそう。
ただし、それはあくまでも学ぶための場所作りで、知識の習得そのものが重要。CS の学位そのものに価値があるみたいな意見はあまりなかった。
(CS の学位事態に価値があるという話の方が多いのかな?と思っていたので、意外な答えだった)
あと、CS の基礎を学びたいのであれば、ハーバード大学が無料で公開している CS550 が良いよっておすすめしてもらいました。
edX(オリジナル版・英語):https://www.edx.org/course/introduction-computer-science-harvardx-cs50x
日本語翻訳:https://cs50.jp/
Q2. 専門領域をなるべく早い段階で決めるべき?
- 決めるべき。給与レンジのことを考えると、専門領域はなるべく早い段階で決めておくと良い。
- 決めた方がいいが、そもそも今の段階で領域を決められないと思う。それよりは、広くやっておくと良い。ただ、広くやっていく中で、自分は何で戦うのかは見つけているようだ。
- ただし、専門領域を決めないこと事態が(現状は)悪いこととは言えない。現状であれば、網羅的にやっていくほうが、自分にとってフィットする専門領域を見つけられる可能性が高い。
- そもそも、専門分野を決めるよりも、決めた専門分野をやり続けていく方が難しい。ずっとやり続けて行くことができそうな分野を見つけたら、それをやって行けたら良いよね。何が続けられる、注力できる専門領域なのかはやってみないとそもそも分からない。
少なくとも話をしていて、自分の勝負所を決めなくても良いみたい、専門分野を決める必要はないって声は聞こえませんでした。ただ、いま現状(23 歳新卒一年目)で広く浅く色々触っているという状況はそこまでネガティブではなくて、むしろ今後自分の専門領域を見つけるために、色々と勉強したりしていったほうが良いよねという意見がありました。
ただし、専門領域はしっかり見つけて行くべきで、できれば早い方が良さそう。
自分は VR に関しては一年以上続けられているので、VR でなにかするといいんじゃないかなって話も聞いたりしました。
Q3. 今の自分が抱えている、スキル不足感をどう解消していくといいのか?
- どれだけ何かが出来るようになっても、スキル不足感とは一生付き合っていく必要がある。有名な言語のコントリビューターをやっている人でも、ランクの高いエンジニアでも、自分のスキル不足感は常に抱えながら開発をしたり、仕事をしたりしている。
- この話を聞いたあとに、何人か聞いてみたら、やっぱり似たような回答を得られました。
自分から見て充分強そうな人も、やっぱり自分のスキル不足感は感じながら仕事をしているそう。これは結構意外だったし、かなり勇気づけられました。
みんな自分の弱さと戦いながら物作ってるんだなぁ・・・。
Q4. 普遍的な技術力向上のために、何を勉強していくといいのか、何をしたほうがいいのか?
- テストコードは書くべき!!!テストは大事!!!テストはどんな分野でも必要なので、趣味開発でもテストコードは書く癖を付けておくと結構良いよ。
- トレンディな分野ではなく、普遍的な分野をしっかり勉強してくと良い。例えば、特定の言語で何かを作れるようになるというよりも、関数型言語についての知識の方が普遍的。NFT のトレーディングの情報よりも、認証技術や裏で使われているアルゴリズムについての知識を深めていくと良いよね。
- アウトプットを前提にして勉強をしていくと良い。いわゆるアウトプット駆動開発。例えばブログ、LT、動画でも何でも良い。テーマを一つ決めて、ここからここまでアウトプットをする!と決めておくと、本筋から外れた学習になりづらいかもしれない。あとは、毎月一つアプリを作ってみるとかもおすすめ。WebSocket を理解したいって思ったら、WebSocket を利用したチャットアプリを作ってみる!みたいな。
- 仕事を得る、獲ってくる時に、技術力ももちろんだが、「有名であること」が重要な指標になることももちろんある。例えば、有名な大規模テックカンファレンスで何度も登壇経験がある方が、無いよりも仕事は当然得やすい。限定的な界隈であっても、有名であれば当然仕事の話が舞い込んで来やすい状況は作れるよね。技術者を雇う側としても、一定の知名度があるエンジニアに関しては当然獲得競争があったりするらしい。もちろん、そういった活動を必ずするべきというわけではないが、苦にならないのであればやっておくと、技術力以外の自分の資産になるよ。
- 熟練プログラマーという本がおすすめ。より良いプログラマーを目指すにはどうしていったほうが良いか?というテーマの内容
アプリ作って終わり!ではなく、そこから根本的な技術や知識の習得に繋げていきたいですね。毎月なにか一つテーマを決めてアプリを作ってみるって試みを自分もやっていきたいです。あと、エンジニアとして力をつける以外の視点として、一部界隈でもいいので有名になるための発信や活動をすると良いって観点は今まで全くなかったので新しい視点でした。自分のアウトプット駆動のためのモチベーションにもなりそうな情報なので、この考え方は採用していきたいなと思いました。
アウトプット駆動開発の良さについて言及している記事。
- 6 年目エンジニアが 1 年間アウトプット駆動開発をしたら”圧倒的成長”した件について
https://tech.toreta.in/entry/2020/12/23/000000 - 【2018 年 1 番の成果】アウトプット駆動学習の習慣化
https://qiita.com/yoshinori_hisakawa/items/e4ab2e0a04cfb88f7176 - アウトプット駆動学習を習慣化する / Output Driven Study
https://speakerdeck.com/kakakakakku/output-driven-study
結論:これから何をするか?どういう指針で勉強したりプログラムを書いくか?
様々な話を聞いてみて、一旦以下のような具体的な行動指針を作ることが出来ました。
- 自分のスキル不足感とは仲良くしていく。なんなら自分の原動力にするつもりでいく。
- ブログに記事を書くことを前提に、技術を触ってみる。ブログに内容をまとめることを前提にインプットをしてみる。
- これまで通り、自分が面白いなって思った内容の技術に関して、ちゃんと根本の仕組みに興味を持ちながら触ってみる。いずれ専門領域を決めてやっていくみたいな意識は持っておき、探す感覚は常に持っておく。
- 毎月アウトプットを出す、何かしら学習テーマを決めてアプリを作る試みにチャレンジしてみる。
- 技術力以外にも、知名度があるとなにかと便利らしいので、アウトプットのモチベーションとして知名度をつけるみたいな目標を作っておく。
- 現状一年以上続けられている VR でなにか挑戦してみる。
- おすすめしてもらった CS の授業を一通りやってみる。
せっかくブログもやっていますので、勉強をしている内容や触った技術を定期的に記事にするところから少しずつ初めて行きたいと思っています。
毎月なにかしらアプリ作りをする試みはぜひぜひやっていきたい。このブログでしっかり成果報告をしていきたいですね。
どういった風に進めていくか、やっていくかについては、実際に手を動かして行きながら、自分の続けやすいやり方を考えていきたいなと思います。
こんな記事も見つけた
エンジニアとして長く現役で生き残るために
https://qiita.com/simonritchie/items/621a3bf52fc1597461df
メンタル不調の原因を探っていたら、エンジニアがだいたい持ってそうな普遍的な悩みを抱えていることに気づいたので答えを考えてみた。
https://yuniyuni.work/2021/10/27/2021-10-27 howtobeagoodengineer/